package com.liveinstars.im.domain.manager;

import com.baomidou.mybatisplus.extension.service.IService;
import com.liveinstars.api.im.query.FriendsQuery;
import com.liveinstars.im.domain.dao.model.Friends;

import java.util.List;

/**
 * <p>
 * 朋友表 服务类
 * </p>
 *
 * @author 8btc
 * @since 2020-03-31
 */
public interface FriendsManager extends IService<Friends> {

    /**
     * 根据用户id和朋友userId 查询好友关系列表
     * @param userId
     * @param userFriendId
     * @return
     */
    List<Friends> listByUserIdAndUserFriendId(Long userId, Long userFriendId, Integer type);

    /**
     * 创建好友关系
     * @param applyUserId
     * @param acceptUserId
     * @param type 1-好友 2-临时好友
     */
    void saveFriends(Long applyUserId, Long acceptUserId, Integer type);

    /**
     * 获取好友列表
     * @param userId
     * @param type type 1-好友 2-临时好友
     * @return
     */
    List<Friends> listFriendsByUserIdAndType(Long userId, Integer type);

    /**
     * 获取用户的朋友设置信息
     * @param userId
     * @param friendId
     * @return
     */
    Friends getFriendsByUserIdAndFriendsId(Long userId, Long friendId);

    /**
     * 删除好友关系
     * @param applyUserId
     * @param targetUserId
     */
    void deleteFriends(Long applyUserId, Long targetUserId);

    /**
     * 根据查询条件更新数据
     * @param friends
     * @param query
     */
    void updateByQuery(Friends friends, FriendsQuery query);

    /**
     * 屏蔽好友
     * @param applyUserId
     * @param shieldFriendId
     */
    void updateShield(Long applyUserId, Long shieldFriendId, boolean shield);
}
